class Solution {
public:
    int subarraySum(vector<int>& nums, int k) {
        nums.insert(nums.begin(), 0);
        for (int i = 1; i < nums.size(); i++)
        {
            nums[i] += nums[i - 1];
        }
        unordered_map<int, int> ma;
        ma[0] = 1;
        int ans = 0;
        for (int i = 1; i < nums.size(); i++)
        {
            int temp = nums[i] - k;
            ans += ma[temp];
            ma[nums[i]] += 1;
        }
        return ans;
    }
};